File server technology such as NAS (Network Attached Storage) that allows various types of clients to share electronic data is increasing in importance in the information society in which enormous amounts of electronic data are produced. NFS (Network File System) for UNIX (registered trademark)-based clients and CIFS (Common Internet File System) for Windows (registered trademark)-based clients are two mainstream file access protocols used by clients to access NAS.
There is a demand for improving the availability of such file servers because the file servers centrally manage electronic data. One technique to improve the availability is clustering in which a file server is built with multiple nodes. A NAS cluster system will be described with reference to FIG. 6, which illustrates an exemplary configuration of a conventional NAS cluster system 9.
As illustrated in FIG. 6, the NAS cluster system 9 includes cluster nodes 90a and 90b and a shared disk 91, which are connected to clients 10. The clients 10 are information processing apparatuses that send requests such as data write requests to the NAS cluster system 9 and may be personal computers, for example. The block “CLIENTS” 10 illustrated in FIG. 6 represents one or more information processing apparatuses. The term “request” as used herein refers to a request such as data write, data read, or data delete request sent from any of the clients 10. The shared disk 91 is a storage device storing user data and system data and is connected with the cluster nodes 90a and 90b. 
In FIG. 6, the cluster node 90a is an operational node that provides services to the clients. The cluster node 90b is a stand-by node that takes over the cluster node 90a and provides services if the cluster node 90a stops operation because of a failure or maintenance. The cluster nodes 90a and 90b have a cluster controller 92. The cluster controller 92 controls which of the nodes 90a and 90b is to be activated. The cluster controller 92 deactivates the cluster node 90b while the cluster node 90a is active. On the other hand, the cluster controller 92 activates the cluster node 90b when the cluster node 90a is deactivated. The cluster node 90a or 90b controlled to be activated provides services to the clients 10.
Requests sent from the clients 10 to the NAS cluster system 9 described above are classified into two types: “idempotent” and “non-idempotent”. An idempotent request is one that, when processed more than once, yields the same result. For example, “Is” (list segments) and “pwd” (print working directory) in UNIX (registered trademark) commands are idempotent requests.
On the other hand, a non-idempotent request is one that, when processed more than once, does not yield the same result. For example, “rmdir” (remove directory) and “mkdir” (make directory) in UNIX (registered trademark) commands are non-idempotent requests. Take, for example, “rmdir.” If the cluster node 90a successfully executes “rmdir” to delete a directory and tries “rmdir” second and subsequent times, an error such as “ENOENT” (No such file or directory) will result.
When a client 10 detects that a request it sent has been lost, the client 10 resends the request. In such a case, the NAS cluster system 9 may accept the same request more than once. When the NAS cluster system 9 processes the request more than once, it would result in errors (“ENOENT” error in the above example) if the request is non-idempotent.
Therefore, the NAS cluster system 9 takes measures to handle non-idempotent requests accepted more than once. In particular, when the NAS cluster system 9 receives a request from a client, the NAS cluster system 9 stores information including a combination of an identification number (“xid”) for identifying the request and reply data for the request in a cache called “DRC” (duplicate reply cache or duplicate request cache). Here, the “reply data for request” is data returned from the NAS cluster system 9 to clients 10. Information including a combination of “xid” and “reply data” stored in a DRC will be called “DRC information” herein.
When the NAS cluster system 9 accepts a request from any of the clients 10, the NAS cluster system 9 searches entries of DRC information stored in the DRC for an entry of DRC information that includes the same “xid” as that of the accepted request. If DRC information including the same “xid” is found in the DRC, the NAS cluster system 9 sends the reply data contained in the found DRC information to the client and then ends the process. With this, the NAS cluster system 9 prevents an error which would be caused by duplicate execution of a non-idempotent request if the NAS cluster system 9 has accepted the non-idempotent request more than once (B. Callaghan, NFS Illustrated, ISBN 0-201-32570-5, Addision-Wesley, 1999).
In general, the NAS cluster system 9 saves DRC information stored in a DRC in a NVRAM (Non Volatile Random Access Memory) accessible to both cluster nodes 90a and 90b. This is done to allow the DRC information to be taken over from the cluster node 90a to the cluster node 90b if failover occurs (S. Lawler, Active/Active Controller Configuration Overview and Best Practice Guidelines, TR3450-0107, Network Appliance Inc., January 2007)